﻿#ifndef OBJHEADER_H
#define OBJHEADER_H

#include <QString>
#include <QVector3D>
#include <Qt3DRender/QGeometry>
#include <QPhongMaterial>
#include <QGeometryRenderer>
#include <QMaterial>

// 面的索引
// 例如，一个面的一个顶点可能包含 position_index, texcoord_index, normal_index
struct FaceIndex {
    int posIndex;
    int texIndex;
    int normIndex;
};

// 新增材质结构
struct Material {
    QString name;
    QVector3D ambient  = QVector3D(0.2f, 0.2f, 0.2f);     // Ka
    QVector3D diffuse  = QVector3D(0.8f, 0.8f, 0.8f);     // Kd
    QVector3D specular = QVector3D(0.0f, 0.0f, 0.0f);     // Ks
    float shininess = 0.0f;                               // Ns
    QString diffuseTexturePath;                           // map_Kd
    // 可扩展：specular map, normal map 等
};

// 存储每个材质对应的 geometry renderer
struct MeshPart {
    Qt3DRender::QGeometryRenderer* renderer;
    Qt3DRender::QMaterial* material;

    // 可选：显式构造函数（更安全）
    MeshPart(Qt3DRender::QGeometryRenderer* r, Qt3DRender::QMaterial* m)
        : renderer(r), material(m) {}
};

#endif // OBJHEADER_H
